import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

/**
 * 固定结构
 */
class MyApp4 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("I am appBar"),
        ),
        body: Center(
          child: Container(
            alignment: Alignment.center,
            child: LocalImage(),
            // child: NetworkImage(),
            height: 500.0,
            width: 400.0,
          ),
        ),
      ),
    );
  }
}


class LocalImage extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return Image.asset('images/11.jpeg');
  }
}

class NetworkImage extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return  Image.network(
      // Image.asset:加载资源图片，就是加载项目资源目录中的图片,加入图片后会增大打包的包体体积，用的是相对路径。
      // Image.network:网络资源图片，意思就是你需要加入一段http://xxxx.xxx的这样的网络路径地址。
      // Image.file:加载本地图片，就是加载本地文件中的图片，这个是一个绝对路径，跟包体无关。
      // Image.memory: 加载Uint8List资源图片
      // 来自网络的图片
      "https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE4wwte?ver=b46a",
      // 缩放比例
      scale: 1.0,

      // fit属性可以控制图片的拉伸和挤压，这些都是根据图片的父级容器来的
      fit: BoxFit.fill,
      //全图显示，图片会被拉伸，并充满父容器。
      // fit: BoxFit.contain, //全图显示，显示原比例，可能会有空隙。
      // fit: BoxFit.cover, //显示可能拉伸，可能裁切，充满（图片要充满整个容器，还不变形）。
      // fit: BoxFit.fitWidth, //宽度充满（横向充满），显示可能拉伸，可能裁切。
      // fit: BoxFit.fitHeight, //高度充满（竖向充满）,显示可能拉伸，可能裁切。
      // fit: BoxFit.scaleDown, //效果和contain差不多，但是此属性不允许显示超过源图片大小，可小不可大。

      //图片混合模式（colorBlendMode）和color属性配合使用，能让图片改变颜色
      //是要混合的颜色，如果你只设置color是没有意义的。
      color: Colors.greenAccent,
      //是混合模式，相当于我们如何混合
      colorBlendMode: BlendMode.darken,

      // ImageRepeat.repeat : 横向和纵向都进行重复，直到铺满整个画布。
      // ImageRepeat.repeatX: 横向重复，纵向不重复。
      // ImageRepeat.repeatY：纵向重复，横向不重复。
      repeat: ImageRepeat.repeat,
    );
  }
}
